/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package kn.mx.cstf2.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import kn.cstf2.global.db.Operations.OperacionesDB;
import kn.cstf2.login.Server.AdaptadorLogin;
import kn.mx.cstf2.dao.LoginDao;
import kn.mx.cstf2.dto.UsuarioDto;
import kn.mx.cstf2.sql.LoginSQL;
import kn.mx.cstf2.utils.CstF2Exception;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;

/**
 *
 * @author user1
 */
@Repository
public class LoginDaoImpl extends JdbcDaoSupport implements LoginDao{
    
    private static Logger log = Logger.getLogger(LoginDaoImpl.class);
    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
    
    @Autowired
	public LoginDaoImpl(DataSource dataSource){
		setDataSource(dataSource);
		this.namedParameterJdbcTemplate= new NamedParameterJdbcTemplate(dataSource);
	}
    
    
    
    OperacionesDB odb = new OperacionesDB();

    public UsuarioDto obtenerUsuarioIngreso(UsuarioDto usuario) {
       UsuarioDto user= new UsuarioDto();
        String query = "SELECT * FROM t_users WHERE UPPER(username) = ? AND pwd = ?";
     	List<Map<String, Object>> rows = getJdbcTemplate().queryForList(query,new Object[] {usuario.getName(), usuario.getPassword()});
    	if(rows.size() >0){
    		for (Map row : rows) {
        		try {
    				user=AdaptadorLogin.obtenerUsuario(row);
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} 
        		System.out.println();
        	}
    		return user;
    	}else{
    		return null;
    	}
     	
    	
     
//     	return (UsuarioDto) namedParameterJdbcTemplate.query(query,namedParameters, ParameterizedBeanPropertyRowMapper.newInstance(UsuarioDto.class));
//    	
    	
//       	Connection conn = null;
//        PreparedStatement ps = null;
//        ResultSet rs = null;
//        String sentenciaSQL = LoginSQL.SELECCIONAR;
//        int index = 1;
//
//        try {
//            conn = odb.obtenerConexion("db");
//            
//            ps = conn.prepareStatement(sentenciaSQL);
//            
//            ps.setString(index++, usuario.getName());
//            ps.setString(index++, usuario.getPassword());
//            
//            rs = ps.executeQuery();
//           usuario = AdaptadorLogin.obtenerUsuario(rs);         
//        } catch (SQLException ex) {
//            log.error("Error al obtener el Usuario desde la base de datos", ex);
//            throw new CstF2Exception("Error al obtener el Usuario desde la base de datos");
//        } finally {
//            odb.cerrarResultSet(rs);
//            odb.cerrarStatement(ps);
//            odb.cerrarConnection(conn);
//        }
//        return usuario;
    }
}
